home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / programr / genmix1b.zip / GENMIX / SRC / PORT.H < prev    next >
C/C++ Source or Header  |  1995-04-12  |  4KB  |  180 lines

  1. #ifndef __PORT_H
  2. #define __PORT_H
  3.  
  4. #define ismac 0
  5. #define    isppc 0
  6. #define iswin 1
  7. #define isdos 0
  8.  
  9. #define    isdebug    1
  10.  
  11. #if iswin
  12.  
  13. #include <stdio.h>
  14. #include <stdlib.h>
  15. #include <string.h>
  16. #include <sys\stat.h>
  17. #include <time.h>
  18. #include <math.h>
  19. #include <io.h>
  20. #include <windows.h>
  21. #include <mmsystem.h>
  22.  
  23. #endif
  24.  
  25. typedef enum
  26. {
  27.     badsid = 100,        // bad star id
  28.     badsiz,              // bad star file size
  29.     badmem,              // memory error
  30.     badmat,              // bad star file version
  31.     badfil,              // file error
  32.     badtxt,              // text error
  33.     badlok,              // bad lock use count
  34.     badlog               // logic error
  35. } rescode;
  36.  
  37. void        portFatalError(rescode, short);
  38.  
  39. /* -------- PORTMEM.C -- Memory allocation -------- */
  40.  
  41. #if ismac
  42.     #define handle Handle
  43.     #define pmem Ptr
  44. #endif
  45. #if iswin
  46.     #define handle HANDLE
  47.     #define    pmem LPSTR
  48. #endif
  49.  
  50. long        memGetMaxAlloc(void);
  51. long        memGetStackSpace(void);
  52. void        memClear(pmem, long);
  53. void        memSet(pmem, char, long);
  54. void        memCopy(pmem, pmem, long);
  55. void        memMove(pmem, pmem, long);
  56. pmem        memNew(long);
  57. void        memDispose(pmem);
  58. long        memGetSize(pmem);
  59.  
  60. /* -------- PORTWAVE.C -- Sound output -------- */
  61.  
  62. #define waveRateBase    11025L
  63.  
  64. #if ismac
  65.     #define    mixRingSize        (2048L+16)
  66. #endif
  67.  
  68. #if iswin
  69.     #define    mixRingSize        (65536L+16)
  70. #endif
  71.  
  72. typedef enum 
  73. {
  74.     waveRate11k         = 1,
  75.     waveRate22k         = 2,
  76.     waveRate44k         = 4
  77. } waveRate;
  78.  
  79. typedef enum
  80. {
  81.     waveBits8              = 1,
  82.     waveBits16             = 2
  83. } waveBits;
  84.  
  85. typedef enum
  86. {
  87.     waveSpeakMono       = 1,
  88.     waveSpeakStereo        = 2
  89. } waveSpeak;
  90.  
  91. rescode        waveOpen(waveRate, waveBits, waveSpeak, int*, int*, int*);
  92. rescode        waveClose(void);
  93. rescode        waveReset(void);
  94. rescode        waveGetPlayPtr(pmem *);
  95. rescode        wavePlay(void);
  96. rescode        waveGetSampleCount(long *);
  97. rescode        waveGetVolume(short *);
  98. rescode        waveSetVolume(short);
  99.  
  100. /* -------- GENMIX.C -- Sound mixer -------- */
  101.  
  102. typedef struct
  103. {
  104.     long        mul;
  105.     char        shift;
  106. } mixVolChan;
  107.  
  108. typedef struct
  109. {
  110.     mixVolChan    left;
  111.     mixVolChan    right;
  112.     mixVolChan    both;
  113. } mixVol, *pmixVol;
  114.  
  115. #define mixNumCodec    4
  116.  
  117. typedef enum
  118. {
  119.     mixCodecPCM         = 0,
  120.     mixCodecADPCM         = 1,
  121.     mixCodecCyberflix    = 2,
  122.     mixCodecCyberflix2    = 3
  123. } mixCodecType;
  124.  
  125. typedef struct tagmixSound *pmixSound;
  126.  
  127. typedef void (*mixCodecRendFn)(pmem,pmem,void*);
  128. typedef void (*mixCodecInitFn)(pmixSound,void*);
  129.  
  130. typedef struct
  131. {
  132.     mixCodecType    type;
  133.     long            blocksize;
  134.     long            datasize;
  135.     mixCodecRendFn    rendfn;
  136.     mixCodecInitFn    initfn;
  137. } mixCodec, *pmixCodec;
  138.  
  139. typedef struct
  140. {
  141.     mixCodec        codec;
  142.     void            *privdata;
  143.     pmem            *pablocks;
  144.     long            numblocks;
  145.     long            curblock;
  146.     long            curpos;
  147. } mixCodecInst, *pmixCodecInst;
  148.  
  149. typedef struct tagmixSound
  150. {
  151.     mixCodecType    type;
  152.     pmem            pdata;
  153.     long            samples;
  154.     waveRate        rate;
  155.     waveBits        bits;
  156.     waveSpeak        speak;
  157.     mixVol            vol;
  158. } mixSound;
  159.  
  160. rescode        mixOpen(short, waveRate, waveBits, waveSpeak);
  161. rescode        mixClose(void);
  162. rescode        mixPlay(short, pmixSound);
  163. rescode        mixUnplay(pmem);
  164. rescode        mixAppend(short, pmixSound);
  165. rescode        mixSilence(short);
  166. rescode        mixIsSilent(short);
  167. rescode        mixLoadChannel(short, pmixSound *, short);
  168. rescode        mixSetVolume(short, pmixVol);
  169. rescode        mixGetVolume(short, pmixVol);
  170. rescode        mixIsDataPlaying(pmem);
  171. rescode        mixPause(void);
  172. rescode        mixResume(void);
  173. rescode        mixPump(void);
  174. rescode        mixVolCreate(pmixVol, double, double);
  175. rescode     mixVolMult(pmixVol, pmixVol, pmixVol);
  176. rescode        mixInstallCodec(pmixCodec);
  177.  
  178. #endif    // ifndef __PORT_H
  179.  
  180.